#pragma once

#include <map>
#include <string>
#include <unordered_map>
#include <vector>
namespace camera_perception {

enum class BevdetObjectType {
    CAR = 0, // 轿车
    TRUCK = 1, // 卡车
    CONSTRUCTION_VEHICLE = 2, // 工程车辆
    BUS = 3, // 公共汽车
    TRAILER = 4, // 货车
    BARRIER = 5, // 障碍
    MOTORCYCLE = 6, // 摩托车
    BICYCLE = 7, // 自行车
    PEDESTRIAN = 8, // 行人
    TRAFFIC_CONE = 9, // 交通锥
};

enum class ObjectType {
    UNKNOWN = 0, // 未知
    CAR = 1, // 轿车
    VAN = 2, // 面包车
    MOTORCYCLE = 3, // 摩托车
    BOXTRUCK = 4, // 厢式货车
    TRUCK = 5, // 卡车
    BUS = 6, // 公交车
    PEDESTRIAN = 101, // 行人
    BICYCLE = 102, // 自行车
    TRICYCLE = 103, // 三轮车
    TRAFFIC_CONE = 104, // 锥桶
    TRIANGLE = 105, // 三角牌
};

const std::unordered_map<BevdetObjectType, ObjectType> objectTypeMapBevdetType = {
    { BevdetObjectType::CAR, ObjectType::CAR },
    { BevdetObjectType::TRUCK, ObjectType::TRUCK },
    { BevdetObjectType::CONSTRUCTION_VEHICLE, ObjectType::VAN },
    { BevdetObjectType::BUS, ObjectType::BUS },
    { BevdetObjectType::TRAILER, ObjectType::BOXTRUCK },
    { BevdetObjectType::BARRIER, ObjectType::UNKNOWN },
    { BevdetObjectType::MOTORCYCLE, ObjectType::MOTORCYCLE },
    { BevdetObjectType::BICYCLE, ObjectType::BICYCLE },
    { BevdetObjectType::PEDESTRIAN, ObjectType::PEDESTRIAN },
    { BevdetObjectType::TRAFFIC_CONE, ObjectType::TRAFFIC_CONE },
};

}